Apache Tika বিভিন্ন ধরনের ডকুমেন্ট থেকে টেক্সট এবং মেটাডেটা এক্সট্রাক্ট করতে অত্যন্ত কার্যকরী একটি টুল। তবে বড় স্কেলের ডেটা প্রসেসিং-এর সময় এটি ধীরগতির হতে পারে। পারফরম্যান্স অপটিমাইজেশন করলে Tika আরও দ্রুত এবং দক্ষতার সাথে কাজ করতে পারে।
Tika Performance Optimization-এর পদ্ধতি
১. Tika Server ব্যবহার করা
Tika অ্যাপ্লিকেশনের জন্য Tika Server একটি ভালো সমাধান। এতে REST API ব্যবহার করে ডকুমেন্ট প্রসেস করা যায় এবং একই সার্ভারে একাধিক রিকোয়েস্ট হ্যান্ডল করা যায়।
সুবিধা:
- ডকুমেন্ট প্রসেসিং ডিস্ট্রিবিউটেড করা যায়।
- অপ্রয়োজনীয় JVM Initialization এড়ানো হয়।
Tika Server স্টার্ট করা:
java -jar tika-server-standard-2.x.jar
REST API দিয়ে ফাইল প্রসেস করা:
curl -T example.pdf http://localhost:9998/tika
২. Content Length সীমাবদ্ধ করা
ডকুমেন্টের খুব বড় অংশ প্রসেস করতে গেলে অনেক সময় ব্যয় হয়। তাই Content Length সীমাবদ্ধ করা একটি কার্যকরী অপটিমাইজেশন।
BodyContentHandler ব্যবহার করে লিমিট সেট করা যায়:
BodyContentHandler handler = new BodyContentHandler(10 * 1024 * 1024); // 10 MB পর্যন্ত সীমা
৩. Threading এবং Parallel Processing
একাধিক ফাইল প্রসেস করার জন্য Multithreading ব্যবহার করলে সময় কমে যায়।
Java ExecutorService উদাহরণ:
ExecutorService executor = Executors.newFixedThreadPool(10);
for (File file : files) {
executor.submit(() -> {
try {
Tika tika = new Tika();
String content = tika.parseToString(file);
System.out.println("Processed: " + file.getName());
} catch (Exception e) {
e.printStackTrace();
}
});
}
executor.shutdown();
৪. Specific Parser ব্যবহার করা
Tika স্বয়ংক্রিয়ভাবে ডকুমেন্ট টাইপ চিহ্নিত করে Parser নির্বাচন করে। তবে পারফরম্যান্স বাড়াতে Specific Parser নির্ধারণ করা ভালো।
PDFParser ব্যবহার:
PDFParser parser = new PDFParser();
parser.parse(inputStream, handler, metadata, new ParseContext());
৫. Caching ব্যবহার করা
একই ধরনের ডকুমেন্ট বা ফাইল বারবার প্রসেসিংয়ের ক্ষেত্রে Caching ব্যবহার করলে সময় বাঁচে।
Guava Cache উদাহরণ:
LoadingCache<String, String> cache = CacheBuilder.newBuilder()
.maximumSize(1000)
.expireAfterWrite(10, TimeUnit.MINUTES)
.build(new CacheLoader<>() {
public String load(String key) throws Exception {
Tika tika = new Tika();
return tika.parseToString(new File(key));
}
});
String content = cache.get("example.pdf");
৬. Memory এবং JVM টিউনিং
Tika অ্যাপ্লিকেশন চালানোর সময় JVM মেমোরি টিউন করা প্রয়োজন।
JVM টিউনিং প্যারামিটার:
java -Xms512m -Xmx2g -jar tika-server-standard-2.x.jar
-Xms512m: স্টার্টআপ মেমোরি।-Xmx2g: সর্বোচ্চ মেমোরি।
৭. Unnecessary Parsers নিষ্ক্রিয় করা
Tika ডিফল্টভাবে সব ধরনের Parser লোড করে। যদি নির্দিষ্ট ধরনের ফাইল প্রসেস করতে হয়, তাহলে অপ্রয়োজনীয় পার্সার নিষ্ক্রিয় করুন।
Custom Tika Config (tika-config.xml):
<?xml version="1.0" encoding="UTF-8"?>
<properties>
<parsers>
<parser class="org.apache.tika.parser.pdf.PDFParser"/>
</parsers>
</properties>
৮. Batch Processing ব্যবহার করা
বিপুল সংখ্যক ডকুমেন্ট একসাথে প্রসেস করতে Batch Processing ব্যবহার করা উচিৎ।
বিজ্ঞপ্তি:
Batch প্রসেসিং-এর সময় Memory Leakage এড়াতে Streaming API ব্যবহার করুন।
InputStream stream = new FileInputStream("example.pdf");
parser.parse(stream, handler, metadata, new ParseContext());
stream.close();
সার্বিক পরামর্শ
- Tika Server ব্যবহার করে Distributed Processing।
- Specific Parsers নির্বাচন করে পারফরম্যান্স অপটিমাইজ করা।
- Threading এবং Caching প্রয়োগ করা।
- JVM মেমোরি টিউন করে বড় স্কেলের ডকুমেন্ট প্রসেসিং নিশ্চিত করা।
Apache Tika-এর উপযুক্ত কনফিগারেশন এবং অপটিমাইজেশন করলে ডকুমেন্ট প্রসেসিং আরও দ্রুত এবং স্কেলেবল হয়ে ওঠে।
Read more